热门标签 | HotTags
当前位置:  开发笔记 > 人工智能 > 正文

最小生成树及特殊生成树

前言牢记住一句话:如果对一个算法没完全理解的话,是很难再有进步的!!最小生成树算是最基础的图论了,反正我差不多是背板子来的今天做完一道题,被dalao巧妙的思路震撼了,其实证明还是

前言

牢记住一句话:如果对一个算法没完全理解的话,是很难再有进步的!!

最小生成树算是最基础的图论了,反正我差不多是背板子来的

今天做完一道题,被dalao巧妙的思路震撼了,其实证明还是挺重要的


各种性质

推论\(1\):一个图中的最小生成树可能存在多个

\(~~~~~\)证明:这个不说也能想到吧,多个点\((>2)\)的环权值相同,生成树个数为点数

推论\(2\):对于点\(x\),其所在的权值最小边\((x,y)\),一定存在于某个最小生成树

\(~~~~~\)证明:假设\(x—y\)是间接连接的\(x—a—b—y\),其联通效果等价于\(a—b—y—x\),而不同点在

\(~~~~~~~~~~~~~\)于\(x—a\)与\(x—y\),\((x,y)\leqslant(x,y)\)

推论\(3\):从最小生成树外一点连一条最短边到此树,仍生成最小生成树

\(~~~~~\)证明:利用推论\(2\)易证出,反复把之前的看作一个点然后向联通块外连边,至此我们已证出\(Prim\)算法

推论\(4\):\(Kruskal\)算法

\(~~~~~\)证明:利用推论\(5\)易证出,我们一直在重复加入点,至此我们已证出\(Kruskal\)算法

推论\(5\):对于两个不同的最小生成树\((A,B)\),其边权值排序后的有序集相同\((w(a1),w(a2),w(a3)......w(an))=(w(b1),w(b2),w(b3)......w(bn))\)

\(~~~~~\)证明:假设第一个不同的边\(a_i≠b_i\)

\(~~~~~~~~~~~~~\)情况\(1\):树\(A\)包括\(b_i\),则存在\(j>i,b_i=a_j,a_i\)~\(a_j=b_i\),则\(a_i=a_j\)

\(~~~~~~~~~~~~~\)情况\(2\):树\(A\)不包括\(b_i\),则将\(b_i\)加入树\(A\),其所在环所有边都\(≤b_i\)(因为这是最小生成树),其中至少

\(~~~~~~~~~~~~~\)有一边不在树\(B\)内,则存在\(j≥i,b_i=a_j,a_i\)~\(a_j=b_i\),则\(a_i=a_j\)

\(~~~~~~~~~~~~~\)证毕

推论\(6\):无边值相同的边的图仅一个最小生成树,最小生成树里所以边值于原图无边值相同的边的图仅一个最小生成树

\(~~~~~\)证明:根据推论\(3\),对于两个不同的最小生成树\((A,B)\),其边权值排序后的有序集相同,既然没有边值相

\(~~~~~~~~~~~~~\)同的边自然仅一个最小生成树

推论\(7\):不同最小生成树相同权值的边连起来后联通块状态相同

\(~~~~~\)证明:我们首先考虑权值最小的边,全部连起来后并去掉环,显然不同的方案集合都是是相同的

\(~~~~~~~~~~~~~\)那么次小权值的边呢?我们将之间得到的集合缩点,因为这个集合的点不可能再互相连边了

\(~~~~~~~~~~~~~\)次小权值边就成当前最小权值的边,同上

推论\(8\):最小生成树两点间最大值最小

\(~~~~~\)证明:这个随便证吧


\(Kruskal\)特殊生成树

无向带权图,每次查询两点间所有路径的最大值,且最大值最小

\((u,v,d)\)找到\(u,v\)的祖先\(fu,fv\)新建节点\(node\),该节点值为\(d\),\(f[fu,fv]=node\)

查询时查询\(lca\)就好了


例题

归程

利用水深找到\(lca\),里面的联通,维护子树内到点\(1\)的最小值


总结

最近陆续把这种推论性的东西写一遍吧

牢记住一句话:如果对一个算法没完全理解的话,是很难再有进步的!!



推荐阅读
  • 深入探讨:Java 8 中 HashMap 链表为何选择红黑树而非 AVL 树
    深入探讨:Java 8 中 HashMap 链表为何选择红黑树而非 AVL 树 ... [详细]
  • 在SWUSTOJ #1063中,题目要求对带权重的有向图进行算法计算与分析。假设图G使用邻接矩阵存储,任务是计算图中的最大权值和最小权值,并确定对应的有向边。输入数据的第一行包含一个整数n,表示图中节点的数量。随后的输入将提供图的边及其权重信息。通过该算法,可以有效地找出图中的关键路径和最短路径,为图论问题的解决提供重要参考。 ... [详细]
  • 为了评估精心优化的模型与策略在实际环境中的表现,Google对其实验框架进行了全面升级,旨在实现更高效、更精准和更快速的在线测试。新的框架支持更多的实验场景,提供更好的数据洞察,并显著缩短了实验周期,从而加速产品迭代和优化过程。 ... [详细]
  • 本文提出了一种高效的数据结构与算法,旨在解决超大整数(超出常规 `long` 类型范围)的加法运算问题。通过引入自定义的数据结构,该方法能够有效地存储和处理任意大小的整数,并在保证计算精度的同时,显著提升运算效率。实验结果表明,该方法在处理大规模数据时表现出色,具有较高的实用价值。 ... [详细]
  • 本文详细介绍了Java编程中的几种重要技巧,包括冒泡排序和选择排序这两种基础的数组排序算法。冒泡排序通过多次遍历数组,将较大的元素逐步移动到数组末尾;而选择排序则在每次遍历中选择最小的元素并将其放置在正确的位置。此外,文章还探讨了二分查找算法,该算法适用于已排序的数组,能够高效地进行查找操作。同时,文中还介绍了Java中的`Arrays`类及其常用方法,以及如何进行进制转换和装箱与拆箱操作,提供了丰富的示例和注意事项,帮助读者深入理解这些核心概念。 ... [详细]
  • 本文详细解析了九度编程平台上的斐波那契数列高效算法挑战(题目编号:1387)。该挑战要求在1秒的时间限制和32兆的内存限制下,设计出高效的斐波那契数列计算方法。通过多种算法的对比和性能分析,本文提供了优化方案,帮助参赛者在限定资源条件下实现高效计算。 ... [详细]
  • 解决Android应用在手机安装时出现安全风险提示的方法与对策
    解决Android应用在手机安装时出现安全风险提示的方法与对策 ... [详细]
  • 在数据库事务处理中,InnoDB 存储引擎提供了多种隔离级别,其中 READ COMMITTED 和 REPEATABLE READ 是两个常用的选项。本文详细对比了这两种隔离级别的特点和差异,不仅从理论角度分析了它们对“脏读”和“幻读”的处理方式,还结合实际应用场景探讨了它们在并发控制和性能表现上的不同。特别关注了行锁机制在不同隔离级别下的行为,为开发者选择合适的隔离级别提供了参考。 ... [详细]
  • 本文深入解析了计算力扣平台上汉明距离问题的官方解法,并通过优化算法提高了计算效率。具体而言,我们详细探讨了如何利用位运算技巧来高效计算数组中所有数对之间的汉明距离,从而在时间和空间复杂度上实现了显著改进。通过实例代码演示,使读者能够更直观地理解这一优化方法。 ... [详细]
  • 设计模式详解:模板方法模式的应用与实现
    模板方法模式是一种行为设计模式,通过定义一个操作中的算法骨架,将具体步骤的实现延迟到子类中。本文详细解析了模板方法模式的类图结构、实现方式以及挂钩机制,并结合实际案例进行了深入探讨。此外,文章还提供了丰富的参考资料,帮助读者更好地理解和应用这一设计模式。对于手机用户,建议横屏阅读以获得更佳的阅读体验。 ... [详细]
  • 探索聚类分析中的K-Means与DBSCAN算法及其应用
    聚类分析是一种用于解决样本或特征分类问题的统计分析方法,也是数据挖掘领域的重要算法之一。本文主要探讨了K-Means和DBSCAN两种聚类算法的原理及其应用场景。K-Means算法通过迭代优化簇中心来实现数据点的划分,适用于球形分布的数据集;而DBSCAN算法则基于密度进行聚类,能够有效识别任意形状的簇,并且对噪声数据具有较好的鲁棒性。通过对这两种算法的对比分析,本文旨在为实际应用中选择合适的聚类方法提供参考。 ... [详细]
  • TypeScript 实战分享:Google 工程师深度解析 TypeScript 开发经验与心得
    TypeScript 实战分享:Google 工程师深度解析 TypeScript 开发经验与心得 ... [详细]
  • 本文深入探讨了基于前序遍历和中序遍历结果重构二叉树的算法。假设输入的前序遍历和中序遍历序列中均无重复数字,通过具体示例如前序遍历序列 {1, 2, 4, 7, 3, 5, 6, 8} 和中序遍历序列,详细解析了如何逐步重建原始二叉树结构。文章不仅提供了理论分析,还结合实际代码实现,帮助读者全面理解该算法的核心原理和应用方法。 ... [详细]
  • 本文源自极分享,详细内容请参阅原文。技术债务如同信用卡负债,随着时间推移,修复成本会越来越高,因此程序员必须对此有深刻认识。此外,团队应致力于培养一种持续维护和优化代码的文化,以减少技术债务的累积。 ... [详细]
  • ZAB算法:实现强一致性的分布式协调机制
    ZAB算法:实现强一致性的分布式协调机制 ... [详细]
author-avatar
66代码
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有